"""
多态：同一个行为，传入不同的对象得到不同的状态
"""


class Animal:

    def speak(self):
        pass


class Dog(Animal):
    def speak(self):
        print("汪汪汪")


class Cat(Animal):
    def speak(self):
        print("喵喵喵")


def make_noise(animal: Animal):
    # 制造一些噪音
    animal.speak()


# 子类实现指向父类引用
dog = Dog()
cat = Cat()

make_noise(dog)
make_noise(cat)

# ============案例2 抽象和子类实现，与多态配合使用===================
print("------------------------------")


# 顶层抽象类：空调类， 含有抽象方法的类被称为抽象类
class AC:
    def cool_wind(self):
        """制冷"""
        # 没有具体实现的方法（pass）被称为抽象方法
        pass

    def hot_wind(self):
        """制热"""
        pass

    def swing_l_r(self):
        """左右吹风"""
        pass


class Media_AC(AC):
    def cool_wind(self):
        print("美的空调制冷")

    def hot_wind(self):
        print("美的空调制热")

    def swing_l_r(self):
        print("美的空调左右吹风")


class Gree_AC(AC):
    def cool_wind(self):
        print("格力空调制冷")

    def hot_wind(self):
        print("格力空调制热")

    def swing_l_r(self):
        print("格力空调左右吹风")


def make_cool(ac: AC):
    """制冷"""
    ac.cool_wind()


# 创建子类对象
media_ac = Media_AC()
gree_ac = Gree_AC()

make_cool(media_ac)
make_cool(gree_ac)
